package main

func Func4() {
	// 函数式编程 => 赋值
	myFunc3 := Func3
	s, err := myFunc3(1, 2)
	println(s, err)
	_, _ = myFunc3(1, 2)

	//_, _ := Func3() => 方法调用
}

// 函数式编程 => 局部调用
func Func5() {
	fn := func(name string) string {
		return "hello " + name
	}
	str := fn("axzed")
	println(str)
}

// 函数式编程 => 方法作为返回值
func Func6() func(name string) string {
	return func(name string) string {
		return "hello " + name
	}
}

func Func6Invoke() {
	// 返回了一个方法 => 这个方法赋值给fn
	fn := Func6()
	// 调用返回赋值的fn
	str := fn("axzed")
	println(str)
}

// 函数式编程 => 匿名方法直接调用 => 常用在defer中
func Func7() {
	fn := func(name string) string {
		return "hello, " + name
	}("axzed")
	println(fn)
}
